require("es6-promise").polyfill(); // 引入一次就行
import axios from "axios";
import router from "../src/router/index";

// 创建 axios 实例
// 这里 export  的原因是方便组件外使用 axios
export const Axios = axios.create({
  baseURL: "https://www.xiang7.net/", //生产服
  //   baseURL: 'http://120.78.70.187:9081/',   //测试服
  timeout: 5000
});

//POST传参序列化(添加请求拦截器)
// 在发送请求之前做某件事
Axios.interceptors.request.use(
  config => {
    if (localStorage.token) {
      config.headers.Authorization = localStorage.token;
    }
    return config;
  },
  error => {
    alert("错误的传参", "fail");
    return Promise.reject(error);
  }
);

//返回状态判断(添加响应拦截器)
Axios.interceptors.response.use(
  res => {
    //对响应数据做些事
    if (res.headers.authorization) {
      localStorage.token = res.headers.authorization;
    }

    return res;
  },
  error => {
    if (error.response.status === 401 || error.response.status === 403) {
      // 401 说明 token 验证失败
      // 可以直接跳转到登录页面，重新登录获取 token
      //location.href = '/admin/login'
      router.push({
        path: "/login",
        query: { redirect: location.hostname }
      });
    } else if (error.response.status === 500) {
      // 服务器错误
      // do something
      return Promise.reject(error.response.data);
    }
    // 返回 response 里的错误信息
    return Promise.reject(error.response.data);
  }
);

// 将 Axios 实例添加到Vue的原型对象上
export default {
  install(Vue) {
    Object.defineProperty(Vue.prototype, "$http", { value: Axios });
  }
};
